locust使ってみる


概要

http://locust.io



install

pipでも入れられるんだけど、大変な量のエラーが出るので諦めてeasy_install。


sudo easy_install locustio



sudo locust -f job.py --host 127.0.0.1:80  --port 8000


で、サンプル的なjob.pyはこんなの。

from locust import HttpLocust, TaskSet, task


class WebsiteTasks(TaskSet):

    def on_start(self):

        pass

        # self.client.get("http:127.0.0.1:80/"

        #     , {

        #     "username": "test_user",

        #     "password": ""

        # })

    

    @task

    def index(self):

        self.client.get("http:127.0.0.1:80/")



    # @task

    # def about(self):

    #     print("b")

    #     self.client.get("/")

    #     # self.client.get("/about/")


class WebsiteUser(HttpLocust):

    task_set = WebsiteTasks

    min_wait = 1000

    max_wait = 15000



コマンドライン実行後、ブラウザで開く。



WebSocketを使いたい

easy_installでWebSocketのライブラリを足す

sudo easy_install websocket-client



jobファイルはこんな感じで。

from locust import HttpLocust, TaskSet, task

from websocket import create_connection

import gevent


class WebsiteTasks(TaskSet):

    def on_start(self): 

        ws = create_connection('ws://127.0.0.1:80/websocket_target_url')

        self.ws = ws


        def _receive():

            while True:

                res = ws.recv()

                print("res", res)


        gevent.spawn(_receive)



    def on_quit(self):

        self.ws.close()



    @task

    def index(self):

        self.ws.send_binary("body")



class WebsiteUser(HttpLocust):

    task_set = WebsiteTasks

    min_wait = 1000/15

    max_wait = 1000/15